Scroll to navigation

find(1) 2007-10-27-16:31 find(1)

НАЗВА

find - шукати файли в ієрархії тек

ЗВІД

find [шлях...] [вираз]

ОПИС

Ця сторінка допомоги описує GNU версію find . find шукає в деревах тек, які починаються з кожної заданої назви шляху, обчислюючи даний вираз зліва направо, згідно з правилами пріоритету операцій (див. секцію ОПЕРАТОРИ), поки значення виразу не стане відомим (ліва частина хибна для операцій and, істинна для or), після чого find переходить до наступного файлу.

перший арґумент, що починається з '-', '(', ')', ',', або '!' береться за початок виразу; будь-які арґументи перед нього є шляхами пошуку, і будь-які арґументи після є рештою виразу. Якщо не вказано жодного шляху, береться поточна тека. Якщо не вказано вираз, береться вираз '-print'.

find вертає код завершення 0 якщо всі файли оброблено вдало, більший за 0 при помилках.

ВИРАЗИ

Вираз складається з опцій (що впливають на загальний хід виконання, а не обробку певного файлу, і завжди вертають істину), умов (на виході істинне чи хибне значення), та дій (що мають сторонній ефект і вертають істинне чи хибне значення), розділених операторами. Коли оператор пропущено вживається -and. Якщо немає дій крім -prune, виконується -print на всіх файлах, для яких вираз істинний.

ОПЦІЇ

Всі опції завжди вертають істину. Вони діють завжди, а не лише тоді, коли доходить їхня черга у виразі. Тому, для ясності, краще ставити їх на початку виразу.

-daystart

Виміряти час (для -amin, -atime, -cmin, -ctime, -mmin, та -mtime) з початку цього дня, а не від 24 годин тому.

-depth

Обробляти вміст кожної теки перед самою текою.

-follow

Йти за символьними посиланнями. Неявно задає -noleaf.

-help, --help

Вивести коротку допомогу з find та вийти.

-maxdepth рівнень

Спускатись не більше ніж на рівень (невід'ємне ціле) тек нижче арґументів командного рядка. '-maxdepth 0' означає застосувати умови та дії лише до арґументів командного рядка.

-mindepth рівень

Не застосовувати умови та дії на рівнях менших за рівень ( невід'ємне ціле). '-mindepth 1' вказує обробляти всі файли крім арґументів командного рядка.

-mount

Не спускатись теками на інших файлових системах. Інша назва для -xdev, для сумісності з деякими версіями find .

-noleaf

Не оптимізувати припускаючи, що тека містить підтек на 2 менше ніж кількість своїх жорстких посилань. Ця опція потрібна при пошуку у файлових системах, що не узгоджені зі стандартом посилань тек Unix, таких як файлові системи CD-ROM чи MS-DOS, або точки монтування томів AFS. Кожна тека на звичайній файловій системі Unix має принаймні 2 жорстких посилання: її назва та запис '.'. Додатково, її підтеки мають прив'язаний до неї запис '..'. Коли find перевіряє теку, після отримання статусу для підтек кількістю на 2 менше ніж кількість посилань теки він знає, що решта файлів у теці не є теками('листові (leaf)' файли в дереві тек). Якщо треба перевіряти лише назви файлів, немає потреби отримувати статус; це значно прискорює пошук.

-version, --version

Вивести версію find та вийти.

-xdev

Не спускатись теками на інших файлових системах.

УМОВИ

Числові арґументи можна задати так:

+n

для більше ніж n ,

-n

для менше ніж n ,

n

для точно n .

-amin n

Востаннє доступ до файлу був n хвилин тому.

-anewer файл

Доступ до файлу був пізніше ніж файл був змінений. -follow впливає на -anewer лише якщо -follow передує -anewer у командному рядку.

-atime n

Останній раз доступ до файлу був n*24 годин тому.

-cmin n

Статус файлу востаннє змінено n хвилин тому.

-cnewer файл

Статус файлу востаннє змінено пізніше ніж змінено файл. -follow впливає на -cnewer лише якщо -follow передує -cnewer у командному рядку.

-ctime n

Статус файлу востаннє змінено n*24 годин тому.

-empty

файл пустий і є звичайним файлом чи текою.

-false

Завжди хибна.

-fstype тип

Файл на файловій системі тип. Припустимі типи файлових систем різні у різних версіях Unix; Неповний перелік типів файлових систем, що приймаються на тій чи іншій версії Unix: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Вживайте -printf з вказівкою %F щоб побачити типи ваших файлових систем.

-gid n

числовий ідентифікатор (ID) групи файлу n.

-group ім'я_групи

Файл належить до групи ім'я_групи (допускається числовий ідентифікатор (ID) групи).

-ilname зразок

Як -lname, але збіг не чутливий до реґістру.

-iname зразок

Як -name, але збіг не чутливий до реґістру. Наприклад, зразки 'fo*' та 'F??' узгоджуються з назвами файлів 'Foo', 'FOO', 'foo', 'fOo', тощо.

-inum n

Файл має число inode n.

-ipath зразок

Як -path, але збіг не чутливий до реґістру.

-iregex зразок

Як -regex, але збіг не чутливий до реґістру.

Файл має n посилань.

-lname зразок

Файл має символьне посилання, назва якого відповідна зразку оболонки зразок. Метасимволи не розглядають '/' чи '.' окремо.

-mmin n

Дані файлу востаннє змінені n хвилин тому.

-mtime n

Дані файлу востаннє змінені n*24 годин тому.

-name зразок

Основа назви файлу (шлях з вилученими теками) відповідає зразку оболонки зразок. Метасимволи ('*', '?', та '[]') не відповідають '.' на початку основи назви. Для пропуску теки та її файдів, вживайте -prune; дивіться приклад в описі -path.

-newer файл

файл змінено пізніше за файл. -follow впливає на -newer лише якщо -follow передує -newer у командному рядку.

-nouser

Жоден користувач не узгоджений з числовим ідентифікатором (ID) користувача файлу.

-nogroup

Жодна група не узгоджена числовим ідентифікатором (ID) групи файлу.

-path зразок

назва файлу відповідає зразку оболонки зразок. Метасимволи не розглядають '/' чи '.' окремо; отже, наприклад,

find . -path './sr*sc'

надрукує теку з назвою './src/misc' (якщо така існує). Для пропуску всього дерева тек, вживайте -prune замість перевірки кожного файлу в дереві. Наприклад, для пропуску теки 'src/emacs' та усіх файлів і тек у ній, і виводу назв усіх інших знайдених файлів, зробіть подібне:

find . -path './src/emacs' -prune -o -print

-perm режим

Біти дозволів файлу є точно режим (вісімковий чи символьний). Символьні режими беруть за відправну точку режим 0 .

-perm -режим

Всі біти дозволу режим встановлені для файлу.

-perm +mode

Будь-який біт дозволу режим встановлений для файлу.

-regex зразок

назва файлу узгоджена з регулярним виразом зразок. Це збіг для всього шляху. Наприклад, для збігу з файлом './fubar3', придатні регулярні вирази '.*bar.' or '.*b.*3', але не 'b.*r3'.

-size n[bckw]

файл бере n одиниць місця. Одиниця є блоком у 512 байтів за замовчанням чи якщо 'b' йде за n, байтом, якщо 'c' йде за n, кілобайтом, якщо 'k' йде за n, словом з двох байтів, якщо `w' йде за n. Цей розмір не містить непрямі блоки, але лічить блоки у розріджених файлах, ніби вони дійсно виділені.

-true

Завжди істина.

-type c

Файл типу c:

b

блочний (буферований) особливий

c

символьний (небуферований) особливий

d

тека

p

названий канал (FIFO)

f

звичний файл

l

символьне посилання

s

сокет

D

двері (Solaris)

-uid n

числовий ідентифікатор (ID) користувача файлу n.

-used n

Востаннє доступ до файлу був n днів по останній зміні статусу.

-user ім'я

Файл належить користувачу ім'я (допускається числовий ідентифікатор (ID) користувача).

-xtype c

Те саме, що -type поки файл не є символьним посиланням. Для символьних посилань: Якщо не вказано -follow, істина якщо файл є посиланням на файл типу c; якщо вказано -follow , істина якщо c є 'l'. Іншими словами, для символьних посилань, -xtype перевіряє тип файлу, чого не робить -type.

ДІЇ

-exec команда ;

Виконати команду; Істина, якщо повернено стан 0. Всі наступні арґументи find є арґументами для команди, доки не зустрінеться арґумент, що складається з ';'. Рядок '{}' замінюється поточним ім'ям файлу, будь-де він трапляється в арґументах команди, не лише в арґументах, що містять лише його, як у деяких інших версіях find . Обидві ці конструкції може бути необхідним екранувати (символом '\') чи взяти у лапки для захисту від обробки оболонкою. Команда виконується у початковій теці.

-fls файл

Істина; як -ls але пише у файл як -fprint.

-fprint файл

Істина; друк повної назви файлу у файл. Якщо файл не існує при запуску find, він створюється; якщо існує, він очищується. Назви файлу "/dev/stdout" та "/dev/stderr" ; обробляються особливо, вони означають звичний вивід та звичний вивід для помилок, відповідно.

-fprint0 файл

Істина; як -print0 але пише у файл як -fprint.

-fprintf файл формат

Істина; як -printf але пише у файл як -fprint.

-ok команда ;

Як -exec але спочатку питає користувача (зі звичного вводу); якщо відповідь не починається з 'y' чи 'Y', не запускає команду, і повертає хибність.

-print

Істина; друк повної назви файлу у на звичний вивід, з наступним прогоном рядка.

-print0

Істина; друк повної назви файлу у на звичний вивід, з наступним нульовим символом. Це дозволяє приймати файли з символом нового рядка у назві, програмам, що обробляють вивід find.

-printf формат

Істина; друкує формат на звичний вивід, обробляючи екранування '\' та директиви '%'. Ширина і точність поля може бути задана як у функції мови Сі 'printf'. На відміну від -print, -printf не додає символ прогону рядка в кінець рядка. Екранування та директиви наступні:

\a

Гудок тривоги.

\b

Повернення на одну позицію (backspace).

\c

Одразу припинити друк формату і завершити (flush) вивід .

\f

Form feed.

\n

Новий рядок.

\r

Повернення каретки.

\t

Горизонтальна табуляція.

\v

Вертикальна табуляція.

\\

Символ повернення ('\').

\NNN

Символ з ASCII кодом NNN (вісімковим).

Символ '\' за яким будь-який інший символ сприймається як звичайний символ, і обидва друкуються.

%%

Символ відсотка.

%a

Час останнього доступу до файлу у форматі, який вертає функція мови Сі 'ctime'.

%Ak

Час останнього доступу до файлу у форматі, заданому k, що є або '@' або директивою для функції мови Сі 'strftime'. Можливі значення k перелічені далі; деякі з них наявні не на всіх системах, через відмінності у 'strftime' на різних системах.

@

секунди після 1 Січня 1970, 00:00 середнього часу за грінвічським меридіаном (GMT).

Поля часу:

H

година (00..23)

I

година (01..12)

k

година ( 0..23)

l

година ( 1..12)

M

хвилина (00..59)

p

AM (до полудня) чи PM (після полудня), вживаючи настройку локалі

r

час, 12-годинний (гг:хх:сс [AP]M)

S

секунда (00..61)

T

час, 24-годинний (гг:хх:сс)

X

представлення часу у локалі (Г:Х:С)

Z

часова зона (наприклад, EDT), чи нічого, коли часова зона невизначена

Поля дати:

a

Скорочена назва дня тижня у локалі (Нед..Суб)

A

Повна назва дня тижня у локалі, змінної довжини (Неділя..Субота)

b

Скорочена назва місяця у локалі (Січ..Гру)

B

Повна назва дня місяця у локалі, змінної довжини (Січень..Грудень)

c

Дата й час у локалі (Суб Лис 04 12:02:33 EST 1989)

d

день місяця (01..31)

D

дата (мм/дд/рр)

h

те саме, що b

j

день року (001..366)

m

місяць (01..12)

U

номер тижня року, тижні починаються з неділі (00..53)

w

день тижня (0..6)

W

номер тижня року, тижні починаються з понеділка (00..53)

x

представлення дати у локалі (мм/дд/рр)

y

Останні дві цифри року (00..99)

Y

рік (1970...)

%b

розмір файлу у блоках 512 байтів (округлений вгору).

%c

Час останньої зміни статусу файлу у форматі, який вертає функція мови Сі 'ctime'.

%Ck

Час останньої зміни статусу файлу у форматі заданому k, яке те саме, що й для %A.

%d

глибина файлу в дереві тек; 0 означає, що файл є арґументом командного рядка.

%f

назва файлу з вилученими початковими теками (лише останній запис).

%F

Тип файлової системи на якій файл міститься; Це значення можна вжити для -fstype.

%g

Назва групи файлу, чи числовий ідентифікатор (ID), якщо група безіменна.

%G

числовий ідентифікатор (ID) групи файлу.

%h

Початкові теки назви файлу (все крім останнього запису).

%H

Арґумент командого рядка, за яким знайдено файл.

%i

число inode файлу (десяткове).

%k

розмір файлу у блоках 1K (округлений вгору).

%l

Об'єкти символьного посилання (порожній рядок, якщо файл не є символьним посиланням).

%m

Біти дозволів файлу (вісімкові).

%n

Число жорстких посилань до файлу.

%p

Назва файлу.

%P

Назва файлу з прибраним арґументом командого рядка, за яким знайдено файл.

%s

Розмір файлу в байтах.

%t

Час останньої зміни файлу у форматі, який вертає функція мови Сі 'ctime'.

%Tk

Час останньої зміни файлу у форматі заданому k, яке те саме, що й для %A.

%u

Назва користувача файлу, чи числовий ідентифікатор (ID), якщо користувач неназваний.

%U

числовий ідентифікатор (ID) користувача файлу.

Символ '%', за яким йде будь-який інший символ пропускається (але цей інший символ друкується).

-prune

Якщо не задано -depth, то істина; не спускатись поточною текою.
Якщо -depth не задано, то хибність; не має дії.

-ls

Істина; вивести поточний файл у форматі 'ls -dils' на звичний вивід. Блоки рахуються по 1K, але, якщо задана змінна оточення POSIXLY_CORRECT, то по 512 байтів.

ОПЕРАТОРИ

Перелік у порядку зниження пріоритету:

( вираз )

Задає пріоритет.

! вираз

Істина, якщо вираз хибний.

-not вираз

Те саме, що ! вираз.

вираз1 вираз2

І (неявний); вираз2 не обчислюється, якщо вираз1 хибний.

вираз1 -a вираз2

Те саме, що вираз1 вираз2.

вираз1 -and вираз2

Те саме, що вираз1 вираз2.

вираз1 -o вираз2

Або; вираз2 не обчислюється, якщо вираз1 Істина.

вираз1 -or вираз2

Те саме, що вираз1 -o вираз2.

вираз1 , вираз2

Перелік; і вираз1, і вираз2 завжди обчислюються. Значення вираз1 губиться; значення переліку є значенням вираз2.

ДИВІТЬСЯ ТАКОЖ

locate(1L), locatedb(5L), updatedb(1L), xargs(1L), Finding files (у Info, чи друкованій документації)

2007-10-27-16:31 © 2005-2007 DLOU, GNU FDL